package message

// Message 消息结构
type Message struct {
	Type      string      `json:"type"`       // 消息类型: broadcast, user, room, system
	Action    string      `json:"action"`     // 操作类型: ping, pong, chat, notify, system
	FromUserID int64      `json:"from_user_id,omitempty"` // 发送者用户ID
	ToUserID  int64       `json:"to_user_id,omitempty"`   // 接收者用户ID
	RoomID    string      `json:"room_id,omitempty"`      // 房间ID
	Content   interface{} `json:"content"`    // 消息内容
	Data      interface{} `json:"data,omitempty"`         // 附加数据
	Status    string      `json:"status,omitempty"`       // 消息状态: sent, delivered, read
	Timestamp int64       `json:"timestamp"`  // 时间戳
	ID        string      `json:"id,omitempty"`           // 消息ID
}

// 消息类型常量
const (
	TypeBroadcast = "broadcast" // 广播消息
	TypeUser      = "user"      // 用户消息
	TypeRoom      = "room"      // 房间消息
	TypeSystem    = "system"    // 系统消息
)

// 操作类型常量
const (
	ActionPing    = "ping"    // 心跳
	ActionPong    = "pong"    // 心跳响应
	ActionChat    = "chat"    // 聊天
	ActionNotify  = "notify"  // 通知
	ActionSystem  = "system"  // 系统消息
)

// ChatContent 聊天消息内容
type ChatContent struct {
	Text      string `json:"text"`       // 文本内容
	Image     string `json:"image,omitempty"`     // 图片URL
	File      string `json:"file,omitempty"`      // 文件URL
	FileName  string `json:"file_name,omitempty"` // 文件名
}

// NotifyContent 通知消息内容
type NotifyContent struct {
	Title   string `json:"title"`   // 标题
	Message string `json:"message"` // 消息内容
	Level   string `json:"level"`   // 级别: info, success, warning, error
	Link    string `json:"link,omitempty"` // 链接
}

// SystemContent 系统消息内容
type SystemContent struct {
	Title   string      `json:"title"`   // 标题
	Message string      `json:"message"` // 消息内容
	Data    interface{} `json:"data,omitempty"` // 附加数据
}

